"""
@File         : str_replace.py
@Time         : 2024/05/09 21:05:36
@Author       : Qrj
@Email        : 923207736@qq.com
@Description  : 字符串相关的工具类
"""

import re


class StringReplaceUtil:
    """字符串替换工具类"""

    var_regexp = re.compile(r"\{([A-Za-z0-9_]+)\}")

    @classmethod
    def get_string_var(cls, string: str) -> list[str]:
        """获取string中的变量

        Args:
            string (str): 字符串

        Returns:
            list[str]: 变量名称列表
        """
        return cls.var_regexp.findall(string)

    @classmethod
    def replace_string_var(
        cls, string: str, string_var_list: list[str], replace_mapping: dict[str, str]
    ) -> tuple[str, dict[str, str]]:
        """替换string中的变量

        Args:
            string (str): 字符串
            string_var_list (list[str]): 变量列表
            replace_mapping (dict[str, str]): 变量与替换值的映射

        Returns:
            tuple[str, dict[str, str]]: 替换后的字符串, 实际使用的参数映射字典
        """
        replace_mapping_result = {}
        for k, v in replace_mapping.items():
            if k in string_var_list:
                result = string.replace("{" + k + "}", v)
                replace_mapping_result[k] = v
        return result, replace_mapping_result
